}
else /* overwrite_mode */
{
- GdkColor cursor_color;
+ GdkRGBA cursor_color;
GdkRectangle rect;
gint x, y;
rect.height = PANGO_PIXELS (cursor_rect.height);
_gtk_widget_get_cursor_color (widget, &cursor_color);
- gdk_cairo_set_source_color (cr, &cursor_color);
+ gdk_cairo_set_source_rgba (cr, &cursor_color);
gdk_cairo_rectangle (cr, &rect);
cairo_fill (cr);
static void
get_cursor_color (GtkStyleContext *context,
gboolean primary,
- GdkColor *color)
+ GdkRGBA *color)
{
GdkColor *style_color;
if (style_color)
{
- *color = *style_color;
- gdk_color_free (style_color);
- }
- else if (primary)
- {
- GdkRGBA fg;
+ color->red = style_color->red / 65535;
+ color->green = style_color->green / 65535;
+ color->blue = style_color->blue / 65535;
+ color->alpha = 1;
- gtk_style_context_get_color (context, GTK_STATE_FLAG_NORMAL, &fg);
-
- color->red = fg.red * 65535;
- color->green = fg.green * 65535;
- color->blue = fg.blue * 65535;
+ gdk_color_free (style_color);
}
else
{
- GdkRGBA fg;
- GdkRGBA bg;
+ gtk_style_context_get_color (context, GTK_STATE_FLAG_NORMAL, color);
+
+ if (!primary)
+ {
+ GdkRGBA bg;
- gtk_style_context_get_color (context, GTK_STATE_FLAG_NORMAL, &fg);
- gtk_style_context_get_background_color (context, GTK_STATE_FLAG_NORMAL, &bg);
+ gtk_style_context_get_background_color (context, GTK_STATE_FLAG_NORMAL, &bg);
- color->red = (fg.red + bg.red) * 0.5 * 65535;
- color->green = (fg.green + bg.green) * 0.5 * 65535;
- color->blue = (fg.blue + bg.blue) * 0.5 * 65535;
+ color->red = (color->red + bg.red) * 0.5;
+ color->green = (color->green + bg.green) * 0.5;
+ color->blue = (color->blue + bg.blue) * 0.5;
+ }
}
}
void
_gtk_widget_get_cursor_color (GtkWidget *widget,
- GdkColor *color)
+ GdkRGBA *color)
{
GtkStyleContext *context;
gfloat cursor_aspect_ratio;
gint offset;
GtkStyleContext *context;
- GdkColor color;
+ GdkRGBA color;
g_return_if_fail (GTK_IS_WIDGET (widget));
g_return_if_fail (cr != NULL);
context = gtk_widget_get_style_context (widget);
get_cursor_color (context, is_primary, &color);
- gdk_cairo_set_source_color (cr, &color);
+ gdk_cairo_set_source_rgba (cr, &color);
/* When changing the shape or size of the cursor here,
* propagate the changes to gtktextview.c:text_window_invalidate_cursors().
(at_last_line && line_display->insert_index == byte_offset + line->length)))
{
GdkRectangle cursor_rect;
- GdkColor cursor_color;
+ GdkRGBA cursor_color;
cairo_t *cr = text_renderer->cr;
/* we draw text using base color on filled cursor rectangle of cursor color
gdk_cairo_rectangle (cr, &cursor_rect);
cairo_clip (cr);
- gdk_cairo_set_source_color (cr, &cursor_color);
+ gdk_cairo_set_source_rgba (cr, &cursor_color);
cairo_paint (cr);
/* draw text under the cursor if any */